"""
    1、搜索组装测试套件
    2、运行测试套件并生成测试报告
==================================
混沌场景：
    case与case之间按照ASCII码的顺序加载测试用例，
    数字与字母的顺序为：0~9，A~Z,a~z，
    Ø 对于类来说，class TestAxx 会优先于class TestBxx被执行
    Ø 对于方法来说，test_aaa()方法会有优先于test_bbb()被执行
==================================
"""

# 导包
import unittest
import requests
from jacksonreport import TestRunner
from config import conf
import datetime


# 获取case文件夹的绝对路径
case_dir = conf.get_case_path()
# 第一步：加载测试套件,默认加载以test开头的.py文件，否则需要指定你的开头参数pattern='xxxx*.py'
suite = unittest.defaultTestLoader.discover(case_dir)
# 第二步：创建运行对象，传入测试套件
runner = TestRunner(suite)
# 创建运行对象的时候加一个参数templates把值设为2即可使用另一套测试报告模板
# runner = TestRunner(suite, templates=2)
# 第三步：执行测试,失败重运行2次，间隔时间为5秒
runner.rerun_run(count=2, interval=5)

# 测试报告结果推送钉钉，使用wehook地址
wehook = 'https://oapi.dingtalk.com/robot/send?access_token=d34e6b2c64de29ceb51b0b99c888f829fceeef4ef6d6b3a6118eebabd3c71ab2'
res = runner.dingtalk_notice(url=wehook, key=':')


# print(res)


# 测试报告结果推送企业微信，需要先获取到企微的access_token
# 方式1：通过accesstoken推送，需要配置内部应用的企业可信IP(一般情况下，个人不推荐)
# url = 'https://qyapi.weixin.qq.com/cgi-bin/appchat/send?access_token=xxxxxxxxxxxxxx'
# r = runner.push_wxtest_info(url=url, chatid='654321')
# print(r)


# 方式二：使用wehook地址
def push_test_report():
    # 在企微终端某个群组添加机器人之后，可以在机器人详情页看到该机器人特有的webhook
    wehook = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=4419759d-765b-47fd-94a2-b33aff4f9156'
    headers = {"Content-Type": "application/json"}
    current_time = datetime.datetime.now().strftime("%Y-%m-%d")
    data = {
        "msgtype": "text",
        "text": {
            "content": current_time + ":接口自动化测试已完成，详情请移步终端查看测试报告",
            "mentioned_list": ["luoyulong", "@all"]
        }
    }

    s = requests.post(url=wehook, headers=headers, json=data)
    print(s.json())

# push_test_report()
